#include<pthread.h>
#include<iostream>
#include<unistd.h>
#include<cstdio>
using namespace std;

void* Routine(void* s)
{
  pthread_detach(pthread_self());
  int count=5;
  while(count)
  {
    cout<<"pthread is"<<pthread_self()<<" is runing cout is"<<count<<endl;
    count--;
  }
  return nullptr;
}
//线程分离
int main()
{
  pthread_t pid;
  pthread_create(&pid,nullptr,Routine,nullptr);
  //main pthread
  cout<<"main pthread is runing"<<endl;
  sleep(15);
  return 0;
}


//void* Routine(void* s)
//{
//  cout<<"new pthread is runing"<<endl;
//  execlp("ls","ls","-al",NULL);
//}
////创建线程实现进程替换
//int main()
//{
//  pthread_t pid;
//  pthread_create(&pid,nullptr,Routine,nullptr);
//  //main pthread;
//  cout<<"main pthread is runing"<<endl;
//  sleep(10);
//  cout<<"cess"<<endl;
//  return 0;
//}

//void* Pstart(void* s)
//{
//  int * p=(int*)s;
//  int count=*p;
//  while(count)
//  {
//    sleep(1);
//    cout<<"pthread is :"<<pthread_self()<<"| count is "<<count<<endl;
//    //sleep(1);
//    count--;
//  }
//  return (void*)10;
//}
//#define MAX 5
////创建多线程，等待线程返回
//int main()
//{
//  pthread_t pid[MAX];
//  int i=0;
//  //给线程传递整数
//  int* s=new int(6);
//  for( i=0;i<MAX;i++)
//  {
//    pthread_create(pid+i,nullptr,Pstart,(void*)s);
//    sleep(2);
//  }
//  //主线程进行等待
//  void *re=nullptr;
//  for(i=0;i<MAX;i++)
//  {
//    if(pthread_join(pid[i],&re)==0)
//    {
//      cout<<"pthread is"<<pid[i]<<"| quit code is"<<re<<endl;
//    }
//  }
//  delete s;
//  cout<<"man pthread will quite"<<endl;
//  return 0;
//}





//void* Pstart(void* p)
//{
//  sleep(1);
//  cout<<"调用时 "<<pthread_self()<<endl;
//  return nullptr;
//}
////探讨线程id
//int main()
//{
//  pthread_t pid;
//  pthread_create(&pid,nullptr,Pstart,nullptr);
//  cout<<"创建时"<<pid<<endl;
//  sleep(1);
//  return 0;
//}

//void* Pstart(void* p)
//{
//  int i=0;
//  for(;i<5;i++)
//  {
//    std::cout<<i;  //c++也面临刷新策略
//    fflush(stdout);
//    sleep(1);
//  }
//  std::cout<<std::endl;
//  return nullptr;
//}
//int main()
//{
//  pthread_t thread1;
//  int s=pthread_create(&thread1,nullptr,Pstart,nullptr);
//  if(s!=0)
//  {
//    std::cout<<"pthread_create error"<<s<<std::endl;
//  }
//  sleep(10);
//  return 0;
//}
